// 从 axios 框架导入 axios 组件
import axios from 'axios';
import { getTokenName, messageConfirm, messageTip, removeToken } from '../util/utils'; // 假设 utils.js 文件在 util 目录下

// 创建 axios 实例，并设置不同的 baseURL
const axiosInstance = axios.create({
    baseURL: "http://localhost:8090"  // 文件1的接口前缀
});

// 定义服务对象
const contentService = {
    doGet(url, params) {
        return axiosInstance({
            method: 'get',
            url,
            params,
        });
    },
    doPost(url, data) {
        return axiosInstance({
            method: 'post',
            url,
            data,
        });
    },
    doPut(url, data) {
        return axiosInstance({
            method: 'put',
            url,
            data,
        });
    },
    doDelete(url) {
        return axiosInstance({
            method: 'delete',
            url,
        });
    },
    setupInterceptors() {
        axiosInstance.interceptors.request.use(
            (config) => {
                let token = window.sessionStorage.getItem(getTokenName());
                if (!token) {
                    token = window.localStorage.getItem(getTokenName());
                }
                if (token) {
                    config.headers['Authorization'] = `Bearer ${token}`; // 添加 Bearer 前缀是常见的做法
                }
                return config;
            },
            (error) => {
                return Promise.reject(error);
            }
        );

        axiosInstance.interceptors.response.use(
            (response) => {
                if (response.data.code > 900) { // 根据实际情况调整错误码判断逻辑
                    messageConfirm(response.data.msg + '，是否重新去登录？').then(() => {
                        removeToken();
                        window.location.href = '/';
                    }).catch(() => {
                        messageTip('取消去登录', 'warning');
                    });
                    return Promise.reject(new Error('Token validation failed'));
                }
                return response;
            },
            (error) => {
                // 可以在这里添加对 error.response 或 error.message 的处理
                return Promise.reject(error);
            }
        );
    }
};

// 默认导出 contentService 对象
export default contentService;